import Vue from 'vue'
import Vuex from 'vuex'
import axios from 'axios'
Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    list:[],
    inputValue:'aaa',
    nextId:5,
    viewKey:'all'
  },
  mutations: {
    initList(state,list){
      state.list = list 
    },
    setInputValue(state,val){
      state.inputValue = val 
    },
    addItem(state){
      const obj = {
        id:state.nextId,
        info:state.inputValue.trim(),
        done:false 
      }
      state.list.push(obj)
      state.nextId++
      state.inputValue = ''
    },
    removeItem(state,id){
      const i = state.list.findIndex(x=>x.id === id)
      //根据索引，删除对应的元素
      if(i != -1){
        state.list.splice(i,1)
      }
    },
    //修改列表项的选中状态
    changeStatus(state,param){
      const i = state.list.findIndex(x=>x.id === param.id)
      if(i!=-1){
        state.list[i].done = param.status 
      }
    },
    cleanDone(state){
      state.list = state.list.filter(x=>x.done===false)
    },
    changeViewKey(state,viewKey){
      state.viewKey = viewKey
    }
  },
  actions: {
    getList(context){
      axios.get('/list.json').then(({data})=>{
        context.commit('initList',data)
      })
    }
  },
  getters:{
    //统计未完成的任务的条数
    unDoneLength(state){
      return state.list.filter(x=>x.done===false).length
    }
  }
})
